const envato_at__SKIPPED_HOSTNAMES = [ 'localhost', 'landing-page-cms.envato.net', 'landing-page-cms.envato-staging.net', 'envato.com', 'elements.envato.com' ]; const envato_at__FETCH_OPTIONS = { headers: { 'X-Requested-With': 'XMLHttpRequest' } }; /** * Throw an error unless response is OK. * @param {Response} response * @returns {Promise>} response JSON body */ function envato_at__handleFetchJsonResponse(response) { if (!response.ok) { throw new Error(`${response.url} responded with status: ${response.status} ${response.statusText}`); } return response.json(); } /** * Log an error to the console. * @param {Error} error */ function envato_at__handleFetchError(error) { console.error({ error }); } /** * Create the indite href. * @param {string} location * @param {string} referrer * @returns {string} href */ function envato_at__inditeHref(location, referrer) { const searchParams = new URLSearchParams(location.search); searchParams.set('url', location.href); searchParams.set('referrer', referrer); return `/consociate/indite?${searchParams.toString()}`; } /** * Perform inditement and maybe redirect based on response. * @param {string} location * @param {string} referrer */ function envato_at__inditeAndMaybeRedirect(location, referrer) { const href = envato_at__inditeHref(location, referrer); fetch(href, envato_at__FETCH_OPTIONS) .then(envato_at__handleFetchJsonResponse) .then(({ redirect: shouldRedirect, redirect_url: redirectUrl }) => { if (shouldRedirect) location.href = redirectUrl; }) .catch(envato_at__handleFetchError); } /** * Withdraw inditement. */ // eslint-disable-next-line no-unused-vars function envato_at__recant() { fetch('/consociate/recant', envato_at__FETCH_OPTIONS) .then(envato_at__handleFetchJsonResponse) .catch(envato_at__handleFetchError); } /** * Initiate inditement. */ if (!envato_at__SKIPPED_HOSTNAMES.includes(window.location.hostname)) { envato_at__inditeAndMaybeRedirect(window.location, document.referrer); }